package com.etc.dao;

import com.etc.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 文件名:com.etc.entity.UserDao
 * 描述：用户持久层接口
 * 作者:吴仕泉
 * 时间:2019/5/23 19:14
 */
@Repository
@Mapper
public interface UserDao {
    //根据用户ID删除用户信息
    int deleteByPrimaryKey(Integer userid);

    //添加一条记录
    int insert(User record);

    //添加一条记录（参数可变）
    int insertSelective(User record);

    //根据用户ID查询用户信息
    User selectByPrimaryKey(Integer userid);

    //根据用户ID修改用户信息
    int updateByPrimaryKeySelective(User record);

    //根据用户ID修改用户信息（参数可变）
    int updateByPrimaryKey(User record);

    //根据手机号码查询用户是否存在
    User getUserByUserPhone(String userphone);

    //用户注册保存信息的方法
    boolean saveUser(User user);

    /**
     * 根据用户手机号及密码查询数据库的持久层方法
     * @param userphone 用户的手机号
     * @param userpassword 用户的密码
     * @return 查询到的用户对象
     */
    User getUserByUserPhoneAndUserPassword(@Param("userphone") String userphone,@Param("userpassword") String userpassword);

    //用户分页查询
    List<User> selectUserByPage(@Param("start") Integer start, @Param("pageSize") Integer pageSize,
                                    @Param("content") String content);

    //用户数量
    int selectCount(@Param("content") String content);

    //用户禁用
    boolean banByPrimaryKey(Integer userid);

    //用户启用
    boolean qiByPrimaryKey(Integer userid);
    //注册数量
    int selectCountUser();
    //这周的注册量
    int selectDay();


    /**
     * 根据手机号修改密码的方法
     * @param userphone 用户的手机号
     * @param userpassword  新的密码
     * @return 返回是否修改成功
     */
    boolean updateUserPasswordByUserPhone(@Param("userphone") String userphone, @Param("userpassword") String userpassword);


    /**
     * 修改用户信息不修改密码
     * @param user 要修改的用户信息
     * @return 是否修改成功
     */
    boolean updateUserDataByUserid1(User user);

    /**
     * 修改用户信息包括密码
     * @param user 要修改的用户信息
     * @return 是否修改成功
     */
    boolean updateUserDataByUserid2(User user);
}